package commonClass;

import java.io.FileInputStream;
import java.io.IOException;

/**
 * 解析Class文件
 * 
 * @author Administrator
 * 
 */
public class ParseClassFile {
	/** 文件路径 **/
	private static final String FILE_PATH = "C:/A.class";

	public static void main(String args[]) {
		FileInputStream fis = null;
		try {
			fis = new FileInputStream(FILE_PATH);
			int length = fis.available();
			byte[] data = new byte[length];
			fis.read(data);
			parseFile(data);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				fis.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * 解析class文件
	 * 
	 * @param data
	 */
	private static void parseFile(byte[] data) {
		// 输出魔数
		System.out.print("魔数(magic):0x");
		System.out.print(Integer.toHexString(data[0]).substring(6)
				.toUpperCase());
		System.out.print(Integer.toHexString(data[1]).substring(6)
				.toUpperCase());
		System.out.print(Integer.toHexString(data[2]).substring(6)
				.toUpperCase());
		System.out.println(Integer.toHexString(data[3]).substring(6)
				.toUpperCase());
		// 主版本号和次版本号码
		int minor_version = (((int) data[4]) << 8) + data[5];
		int major_version = (((int) data[6]) << 8) + data[7];
		System.out.println("版本号(version):" + major_version + "."
				+ minor_version);
	}
}
